package com.tfos.study.mvc.init.binder.controller;

import com.tfos.study.mvc.init.binder.entity.Organization;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 类功能说明：注解@InitBinder处理请求参数的绑定控制器 <br/>
 * 公司名称：TF（腾飞）开源 <br/>
 * 作者：luorongxi <br/>
 */
@RestController
public class TestMvcInitBinderController {

    /**
     * @InitBinder标注的方法,只针对当前Controller有效!
     * 如果没有该方法,则会产生400状态码!
     */
    @InitBinder
    public void InitBinder(WebDataBinder binder) {
        //前端传入的时间格式必须是"yyyy-MM-dd HH:mm:ss"格式的字符串，此处是将String字符串转Date。
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        CustomDateEditor dateEditor = new CustomDateEditor(df, true);
        binder.registerCustomEditor(Date.class, dateEditor);
    }

    @ResponseBody
    @GetMapping(value = "/initbinder")
    public Organization initBinder(Date editTime) {
        Organization org = new Organization(
                1,
                "腾飞开源",
                "13800138000",
                "492699405@qq.com",
                "TF（腾飞）开源，致力于原创软件开源，提供基于JAVA的基础平台及解决方案，团队成员有丰富的智能设备和物联网平台相关经验，欢迎您的关注。",
                new Date(),
                editTime
        );
        return org;
    }
}
